package ModelLayer.LagerMappe;
import java.util.*;

public class Lager
{
    private ArrayList<DelLager> alleDelLagere;
    private String navn;
       
    public Lager(String navn)
    {
        this.navn = navn;
        alleDelLagere = new ArrayList<DelLager>();
    }
    
    public void setNavn(String newNavn)
    {
        navn = newNavn;
    }
    
    public String getNavn()
    {
        return navn;
    }
    
    public ArrayList<DelLager> getAlleDelLagere()
    {
        return alleDelLagere;
    }
    
    public ArrayList<Vare> getVare(String navn)
    {
        ArrayList<Vare> vareliste = new ArrayList<Vare>();
        for(DelLager dl: alleDelLagere)
        {
            if(dl.getVare().getNavn().contains(navn))
            {
               vareliste.add(dl.getVare());
            }
        }
        return vareliste;
    }
    
    public void createBestillingsvare(int antal, String hyldeNr, String navn, String beskrivelse, String stregkode, double salgspris, double indkoebspris, String leverandoer)
    {
        DelLager dl = new DelLager(antal, hyldeNr, new Bestillingsvare(navn, beskrivelse, stregkode, salgspris, indkoebspris, leverandoer));
        alleDelLagere.add(dl);
    }
    
    public void createHyldevare(int antal, String hyldeNr, String navn, String beskrivelse, String stregkode, double salgspris, double indkoebspris, int minLager, int maxLager, int kvantum)
    {
        DelLager dl = new DelLager(antal, hyldeNr, new Hyldevare(navn, beskrivelse, stregkode, salgspris, indkoebspris, minLager, maxLager, kvantum));
        alleDelLagere.add(dl);
    }
    
    /**
     * Søger lagerne igennem for at se, om de indeholder en vare, hvis navn.contains(vareNavn) 
     */
    public boolean containsVare(String vareNavn)
    {
        int index = delLagerIndex(vareNavn);
        if(index == -1)
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    
    /**
     * Returnerer en ArrayList, indeholdende de delLager, 
     * som indeholder en vare, hvor vare.getNavn().contains(vareNavn).
     */
    public ArrayList<DelLager> getDelLager(String vareNavn)
    {
        ArrayList<DelLager> result = new ArrayList<DelLager>();
 
        for(DelLager dl : alleDelLagere)
        {
            if(dl.vareHedder(vareNavn))
            {
                result.add(dl);
            }
        }
        
        return result;
      
    }
    
    /**
     * Returnere indexet for det delLager, som har en vare, hvor vare.getNavn().contains(vareNavn)
     * Returner -1 hvis varen ikke blev fundet
     */
    private int delLagerIndex(String vareNavn)
    {
        boolean found = false;
        int index = 0;
        while(!found && index < alleDelLagere.size())
        {
            DelLager dl = alleDelLagere.get(index);
            if(dl.vareHedder(vareNavn))
            {
                found = true;
            }
            else
            {
                index++;
            }
        }
        
        if(found)
        {
            return index;
        }
        else
        {
            return -1;
        }
    }
    
}